// 函数什么都不返回时，返回值类型为()
fn get_owner(s: String) -> () {
    // 函数内最后语句不带分号，就是返回值
    println!("s: {}", s);
}

/**
 * 获取首个单词
 */
fn get_frist_word(s: &str) -> &str {
    let bytes = s.as_bytes();
    for (i, &item) in bytes.iter().enumerate() {
        if item == b' ' {
            return &s[0..i];
        }
    }
    &s[..]
}

fn main() {
    // copy
    let x = 5;
    println!("x: {}", x);
    let y = x;
    println!("y: {}", y);
    println!("x: {}", x);

    // move
    let s = String::from("hello");
    println!("s: {}", s);
    let t = s;
    // 下面的s无法打印了，是因为将s的所有权转移给了t
    // println!("s: {}", s);
    println!("t: {}", t);

    // move
    get_owner(t);
    // 下面的t无法打印了，因为getOwner函数已经将t的所有权转移走了
    // println!("t: {}", t);

    let s = "hello world";
    let word = get_frist_word(&s);
    println!("word: {}", word)
}
